package com.ruoyi.business.mapper;

import java.util.List;

import com.ruoyi.business.BO.MatchInsertAssetInfoBO;
import com.ruoyi.business.BO.SelectAcAssetLeaseInfoBO;
import com.ruoyi.business.BO.SelectExpireAssetInfoBO;
import com.ruoyi.business.VO.AcAssetInfoVO;
import com.ruoyi.business.VO.AcAssetLeaseInfoVO;
import com.ruoyi.business.domain.AcAssetInfo;
import com.ruoyi.system.domain.AcWorkOrder;

/**
 * 资产台账管理Mapper接口
 *
 * @author ruoyi
 * @date 2025-01-15
 */
public interface AcAssetInfoMapper
{
    /**
     * 查询资产台账管理
     *
     * @param assetId 资产台账管理主键
     * @return 资产台账管理
     */
    public AcAssetInfo selectAcAssetInfoByAssetId(Long assetId);

    /**
     * 查询资产台账管理列表
     *
     * @param acAssetInfo 资产台账管理
     * @return 资产台账管理集合
     */
    public List<AcAssetInfo> selectAcAssetInfoList(AcAssetInfo acAssetInfo);
    public List<AcAssetInfo> selectAcAssetInfoIoc(AcAssetInfo acAssetInfo);

    /**
     * 新增资产台账管理
     *
     * @param acAssetInfo 资产台账管理
     * @return 结果
     */
    public int insertAcAssetInfo(AcAssetInfo acAssetInfo);

    /**
     * 修改资产台账管理
     *
     * @param acAssetInfo 资产台账管理
     * @return 结果
     */
    public int updateAcAssetInfo(AcAssetInfo acAssetInfo);

    /**
     * 删除资产台账管理
     *
     * @param assetId 资产台账管理主键
     * @return 结果
     */
    public int deleteAcAssetInfoByAssetId(Long assetId);

    /**
     * 批量删除资产台账管理
     *
     * @param assetIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAcAssetInfoByAssetIds(Long[] assetIds);

    // ***************************************************************************************************
    /**
     * 匹配新增资产
     *
     * @param matchInsertAssetInfoBO 匹配新增资产BO
     * @return 0：没匹配，大于0：有匹配
     * **/
    public int matchInsertAssetInfo(MatchInsertAssetInfoBO matchInsertAssetInfoBO);
    /**
     * 匹配新生成的资产编号
     * @param newAssetNumMasetr 新编号
     * @return 0：没匹配，大于0：有匹配
     * **/
    public int matchAssetInfoByNumMaster(Long newAssetNumMasetr);
    /**
     * 根据资产名称查询出一条记录
     *
     * @param
     * **/
    public AcAssetInfo selectAcAssetInfoByAssetNameOnly(MatchInsertAssetInfoBO matchInsertAssetInfoBO);

    /**
     * 当有多条资产名称，并且（资产编号-附）不为null时，
     * 查询出MAX（资产编号-附）
     *
     * @param
     * **/
    public AcAssetInfo selectAcAssetInfoByMaxNumAttachedOnly(MatchInsertAssetInfoBO matchInsertAssetInfoBO);

    /**
     * 资产详情-资产详情
     * **/
    public AcAssetInfoVO selectAssetInfoByAssetId(Long assetId);

    /**
     * 资产详情-资产在租详情
     * **/
    public AcAssetLeaseInfoVO selectAssetLeaseInfoByAssetId(SelectAcAssetLeaseInfoBO selectAcAssetLeaseInfoBO);


    public List<AcWorkOrder> selectAssetFixByAssetId(Long assetId);

    public List<AcWorkOrder> selectAssetCheckByAssetId(Long assetId);
    /**
     * 资产详情-资产历史租赁详情
     * **/
    public List<AcAssetLeaseInfoVO> selectAssetLeaseInfoByAssetIdList(SelectAcAssetLeaseInfoBO selectAcAssetLeaseInfoBO);

    /**
     * 查找到期资产id
     * **/
    public List<SelectExpireAssetInfoBO> selectExpireAssetInfo();

    List<AcAssetInfo> selectAssetNum();

    List<AcAssetInfo> selectAssetLocation();

    List<AcAssetInfo> selectAssetStatus();

    List<AcAssetInfo> selectAssetType();

    List<AcAssetInfo> selectAssetProperty();

    List<AcAssetInfo> selectAssetBookValue();

    List<AcAssetInfo> selectAssetRentNum();

    List<AcAssetInfo> selectAssetChangeType();

    List<AcAssetInfo> selectAssetTop5();
}
